package com.gupaoedu.dubbo;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

/**
 * 腾讯课堂搜索 咕泡学院
 * 加群获取视频：608583947
 * 风骚的Michael 老师
 */
public class Bootstrap {

    /**
     * 在 Dubbo 的核心领域模型中：
     *
     * Protocol 是服务域，它是 Invoker 暴露和引用的主功能入口，它负责 Invoker 的生命周期管理。
     *
     * Invoker 是实体域，它是 Dubbo 的核心模型，其它模型都向它靠扰，或转换成它，它代表一个可执行体，可向它发起 invoke 调用，它有可能是一个本地的实现，也可能是一个远程的实现，也可能一个集群实现。
     *
     * Invocation 是会话域，它持有调用过程中的变量，比如方法名，参数等。
     */
    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context =
            new ClassPathXmlApplicationContext
                    ("META-INF/spring/dubbo-server.xml");
        /**
         * Spring afterPropertiesSet方法
         *
         * dubbo 服务发布的入口就是 ServiceBean 的 afterPropertiesSet 方法
         *      ServiceBean 继承自 InitializingBean
         * InitializingBean 类的 void afterPropertiesSet() throws Exception;
         *      afterPropertiesSet方法，初始化bean的时候执行，可以针对某个具体的bean进行配置。
         *      afterPropertiesSet 必须实现 InitializingBean接口。
         *      实现 InitializingBean接口必须实现afterPropertiesSet方法。
         */
        context.start();
        System.out.println("dubbo 服务启动！！！");
        System.in.read(); //阻塞当前进程

}
}
